進捗テーブル
table: 理解度No5 解けた4 解けたけど要復習3 解説が完全に理解できる
from collections import defaultdict
n, m = map(int, input().split())
s = input()
c = list(map(int, input().split()))
d = defaultdict(int)
for i in range(n):
d[s[i]] = c[i]
print(d)
# どうやって回す?
n, m = map(int, input().split())
s = input()
c = list(map(int, input().split()))
color = [[] for _ in range(m)]
for i in range(n):
c[i] -= 1
color[c[i]].append(i)
# print(color)
# [[0, 3, 6], [1, 4, 5, 7], [2]]
# 各色が何回でたか
p = [0] * m
res = ""
for i in range(n):
mod = len(color[c[i]])
res += s[color[c[i]][(p[c[i]] - 1 + mod) % mod]]
p[c[i]] += 1
print(res)
n, m = map(int, input().split())
s = input()
c = list(map(int, input().split()))
color = [[] for _ in range(m)]
for i in range(n):
c[i] -= 1
color[c[i]].append(i)
# print(color)
# [[0, 3, 6], [1, 4, 5, 7], [2]]
# 右回り
# 2 0 1
# 3 0 1 2
# 0
# 各色が何回でたか
p = [0] * m
res = ""
for i in range(n):
if p[c[i]] == 0:
res += s[color[c[i]][len(color[c[i]])-1]]
else:
res += s[color[c[i]][p[c[i]]-1]]
p[c[i]] += 1
print(res)